home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / NuBusPlugin.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  2KB  |  105 lines

  1. /*
  2.      File:        NuBusPlugin.h
  3.  
  4.      Contains:    I/O Interfaces for NuBus "bus plugins"
  5.  
  6.      Version:    Technology:    xxx Put version info here xxx
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __NUBUSPLUGIN__
  19. #define __NUBUSPLUGIN__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __SLOTS__
  25. #include <Slots.h>
  26. #endif
  27. #ifndef __KERNEL__
  28. #include <Kernel.h>
  29. #endif
  30. #ifndef __INTERRUPTS__
  31. #include <Interrupts.h>
  32. #endif
  33. #ifndef __NAMEREGISTRY__
  34. #include <NameRegistry.h>
  35. #endif
  36. #ifndef __NUBUS__
  37. #include <NuBus.h>
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_IMPORT_SUPPORTED
  45. #pragma import on
  46. #endif
  47.  
  48. #if PRAGMA_ALIGN_SUPPORTED
  49. #pragma options align=mac68k
  50. #endif
  51.  
  52. #if FOR_SYSTEM8_PREEMPTIVE
  53.  
  54. enum {
  55.     kNuBusMaxRegs                = 10,
  56.     kNuBusPluginNSlotMask        = 0x0000000F,
  57.     kNuBusPluginCanDisable        = 0x80000000,
  58.     kNuBusPluginCanMap            = 0x40000000,
  59.     kNuBusPluginVersion            = 0
  60. };
  61.  
  62. typedef OSStatus (*NuBusPluginInitProc)(const RegEntryRef *thisBus);
  63. typedef OSStatus (*NuBusPluginFinalProc)(const RegEntryRef *thisBus);
  64. struct NuBusPluginHeader {
  65.     NumVersion                         version;
  66.     UInt32                             attributes;
  67.     UInt32                             reserved1;
  68.     UInt32                             reserved2;
  69. };
  70. typedef struct NuBusPluginHeader NuBusPluginHeader;
  71.  
  72. struct NuBusPluginDescriptor {
  73.     NuBusPluginHeader                 header;
  74.  
  75.     NuBusPluginInitProc             Initialize;
  76.     NuBusPluginFinalProc             Finalize;
  77. };
  78. typedef struct NuBusPluginDescriptor NuBusPluginDescriptor;
  79.  
  80. /*
  81.  * NuBusMapSlot -
  82.  *
  83.  * The interface a NuBus "bus plugin" uses to communicate its
  84.  * slot addressing requirements to the NuBus family manager
  85.  *
  86. */
  87. extern OSStatus NuBusMapSlot(const RegEntryRef *thisBus, PropertyReg *theseAddresses, ByteCount nAddresses, RegEntryRef *resultSlots);
  88.  
  89. #endif
  90.  
  91. #if PRAGMA_ALIGN_SUPPORTED
  92. #pragma options align=reset
  93. #endif
  94.  
  95. #if PRAGMA_IMPORT_SUPPORTED
  96. #pragma import off
  97. #endif
  98.  
  99. #ifdef __cplusplus
  100. }
  101. #endif
  102.  
  103. #endif /* __NUBUSPLUGIN__ */
  104.  
  105.